昨天介紹完了RxJava,今天就來實際用一次
首先,一樣要先添加依賴,這部分就不再說明了,接著直接來看程式碼
public class MainActivity extends AppCompatActivity {
TextView textView;
private Disposable disposable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
// 創建一個 Observable,模擬獲取字符串的操作
Observable<String> stringObservable = Observable.create(emitter -> {
// 模擬耗時操作,這裡延遲2秒
Thread.sleep(2000);
// 模擬獲取到的字符串
String result = "這是從網絡獲取的字符串";
// 將結果發送給觀察者
emitter.onNext(result);
// 完成操作
emitter.onComplete();
});
// 訂閱 Observable,並指定觀察者的行為
disposable = stringObservable
.subscribeOn(Schedulers.io()) // 在 IO 線程執行
.observeOn(AndroidSchedulers.mainThread()) // 在主 UI 線程更新 UI
.subscribe(
result -> {
// 成功獲取字符串後更新 UI
textView.setText(result);
},
error -> {
// 處理錯誤情況
Toast.makeText(MainActivity.this, "錯誤:" + error.getMessage(), Toast.LENGTH_SHORT).show();
}
);
}
}
這個示例創建了一個Observable,該Observable模擬了一個耗時操作(延遲2秒),然後將獲取的字符串發送給觀察者。觀察者訂閱這個Observable,並在IO線程上執行操作,然後切換到主UI線程以更新UI
結果如下